home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
byt0187b.arc
/
MODE.ASM
< prev
next >
Wrap
Assembly Source File
|
1986-10-09
|
2KB
|
54 lines
;
;MODE.ASM, AN ASSEMBLY LANGUAGE PROGRAM WHICH WILL ALLOW
;SCREEN MODE CHANGES FROM THE SYSTEM LEVEL ON IBM PC/AT/XT
;AND COMPATIBLE SYSTEMS EQUIPPED WITH AN EGA BOARD.
;
;ENTER THE PROGRAM, ASSEMBLE, AND LINK TO OBTAIN THE .EXE FILE.
;
MYDATA SEGMENT PARA 'DATA'
MESSAGE DB "Enter the screen mode desired (in Hexadecimal): $"
MYDATA ENDS
MYCODE SEGMENT PARA 'CODE ;DEFINE CODE SEG. FOR MASM
MYPROC PROC FAR ;PROCEDURE IS NAMED MYPROC
ASSUME CS:MYCODE,DS:MYDATA
PUSH DS ;SAVE LOCATION OF DS REG.
SUB AX,AX ;GET A ZERO IN AX
PUSH AX ;SAVE ZERO ON STACK, TOO
MOV AX,MYDATA ;GET DATA LOCATION IN AX
MOV DS,AX ;PUT IT IN DS REGISTER
LEA DX,MESSAGE ;PRINT MESSAGE TO SCREEN
MOV AH,9
INT 21H
MOV DL,0
DIGIT: MOV AH,01 ;PREPARE TO READ KEY INPUT
INT 21H
SUB AL,30H ;CONVERT FROM ASCII TO HEX DIGIT
CMP AL,0 ;IS NUMBER >=0?
JL DOIT ;IF LOWER, MAKE JUMP FOR MODE SWITCH
CMP AL,9 ;IS NUMBER <=9?
JLE ACCEPT ;IF SO, NUMBER IN 0-9 RANGE - ACCEPT IT
SUB AL,7 ;IF NOT 0-9, IS IT A LETTER (A TO F)?
CMP AL,0 ;CHECK FOR "A"
JL DOIT ;IF NOT, QUIT PROCESS
CMP AL,06H ;CHECK FOR "F"?
JG DOIT ;IF NOT, MAKE JUMP FOR MODE SWITCH
ACCEPT: MOV CL,04H ;PREPARE TO ACCUMULATE UP TO TWO DIGITS
SAL DL,CL ;ROTATE DL CONTENTS ONE "DIGIT" TO LEFT
ADD DL,AL ;ADD IN NEW "DIGIT"
JMP DIGIT ;ANOTHER DIGIT?
DOIT: MOV AL,DL ;PREPARE TO SWITCH SCREEN MODES
MOV AH,0
INT 10H ;CALL INTERRUPT
RET ;RETURN CONTROL TO DOS
MYPROC ENDP ;END PROCEDURE NAMED MYPROC
MYCODE ENDS ;END CODE SEGMENT NAMED MYCODE
END ;END WHOLE PROGRAM
ENDP ;END PROCEDURE NAMED MYPROC
MYCODE ENDS ;